#!/bin/bash

# 微信分发阅读平台 - 一键拉库脚本
# 作者: MiniMax Agent
# 版本: v1.0.0

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 打印彩色消息
print_message() {
    local color=$1
    local message=$2
    echo -e "${color}${message}${NC}"
}

print_banner() {
    echo -e "${BLUE}"
    echo "======================================"
    echo "🚀 微信分发阅读平台 - 一键拉库"
    echo "======================================"
    echo -e "${NC}"
}

# 检查命令是否存在
check_command() {
    if ! command -v $1 &> /dev/null; then
        print_message $RED "❌ $1 未安装，请先安装 $1"
        exit 1
    fi
}

# 检查依赖
check_dependencies() {
    print_message $YELLOW "📦 检查依赖..."
    check_command "git"
    check_command "node"
    check_command "npm"
    print_message $GREEN "✅ 依赖检查完成"
}

# 克隆仓库
clone_repository() {
    local repo_url=$1
    local local_dir=$2
    
    if [ -d "$local_dir" ]; then
        print_message $YELLOW "📁 目录已存在，正在更新..."
        cd "$local_dir"
        git pull origin master
    else
        print_message $YELLOW "📥 正在克隆仓库..."
        git clone "$repo_url" "$local_dir"
        cd "$local_dir"
    fi
}

# 安装依赖
install_dependencies() {
    print_message $YELLOW "📦 正在安装依赖..."
    
    if [ -f "package.json" ]; then
        npm install axios --no-save
        print_message $GREEN "✅ 依赖安装完成"
    else
        print_message $RED "❌ 未找到 package.json 文件"
        exit 1
    fi
}

# 配置权限
setup_permissions() {
    print_message $YELLOW "🔧 设置文件权限..."
    if [ -f "start.sh" ]; then
        chmod +x start.sh
    fi
    if [ -f "wechat_reading_crawler.js" ]; then
        chmod +x wechat_reading_crawler.js
    fi
    print_message $GREEN "✅ 权限设置完成"
}

# 运行测试
run_test() {
    print_message $YELLOW "🧪 运行连接测试..."
    
    if command -v node &> /dev/null; then
        # 简单的连接测试
        node -e "
        const axios = require('axios');
        console.log('🔍 测试平台连接...');
        axios.get('http://yyyeee1190830.mcdur8a2di.xin', {timeout: 10000})
            .then(res => {
                if (res.status === 200) {
                    console.log('✅ 平台连接正常');
                } else {
                    console.log('⚠️  平台返回异常状态:', res.status);
                }
            })
            .catch(err => {
                console.log('❌ 平台连接失败:', err.message);
                process.exit(1);
            });
        " 2>/dev/null || print_message $YELLOW "⚠️  连接测试失败，请检查网络"
    fi
}

# 生成青龙任务脚本
generate_qinglong_script() {
    print_message $YELLOW "📝 生成青龙面板任务脚本..."
    
    local ql_script="# 青龙面板任务配置 - 微信分发阅读平台
# 请将以下内容添加到青龙面板的定时任务中

# 任务1: 主脚本执行 (每2小时)
ql task wechat_reading_crawler.js
规则: 0 */2 * * *

# 任务2: 定时任务模式 (每3小时)
ql task wechat_reading_crawler.js schedule
规则: 0 */3 * * *

# 任务3: 快速检查登录状态 (每小时)
ql task wechat_reading_crawler.js checkLoginStatus
规则: 0 * * * *"
    
    echo "$ql_script" > ql_tasks_config.txt
    print_message $GREEN "✅ 青龙任务配置已保存到 ql_tasks_config.txt"
}

# 显示使用说明
show_usage() {
    print_message $BLUE "📖 使用说明:"
    echo ""
    echo "1. 首次运行:"
    echo "   ./install.sh"
    echo ""
    echo "2. 手动执行脚本:"
    echo "   node wechat_reading_crawler.js"
    echo ""
    echo "3. 定时任务模式:"
    echo "   node wechat_reading_crawler.js schedule"
    echo ""
    echo "4. 查看帮助:"
    echo "   ./start.sh help"
    echo ""
    print_message $YELLOW "⚠️  重要提醒:"
    echo "- 首次使用需要手动微信扫码登录"
    echo "- 登录后脚本会自动检测状态"
    echo "- 建议在青龙面板中配置定时任务"
    echo ""
}

# 主安装函数
main() {
    print_banner
    
    # 获取参数
    repo_url=${1:-"https://gitee.com/17503995945/wechat-reading-platform.git"}
    install_dir=${2:-"./wechat-reading-platform"}
    
    print_message $BLUE "📋 安装信息:"
    echo "仓库地址: $repo_url"
    echo "安装目录: $install_dir"
    echo ""
    
    # 检查依赖
    check_dependencies
    
    # 克隆/更新仓库
    clone_repository "$repo_url" "$install_dir"
    
    # 安装依赖
    install_dependencies
    
    # 设置权限
    setup_permissions
    
    # 运行测试
    run_test
    
    # 生成青龙配置
    generate_qinglong_script
    
    print_message $GREEN "🎉 安装完成!"
    echo ""
    
    # 显示使用说明
    show_usage
    
    print_message $YELLOW "📞 技术支持:"
    echo "平台客服: QQ 3802451151"
    echo "开发者: MiniMax Agent"
    echo ""
}

# 显示帮助信息
show_help() {
    print_banner
    echo "使用方法:"
    echo "  $0 [仓库地址] [安装目录]"
    echo ""
    echo "示例:"
    echo "  $0                                           # 使用默认设置"
    echo "  $0 https://gitee.com/user/repo.git          # 指定仓库"
    echo "  $0 /path/to/local/repo                       # 本地仓库"
    echo "  $0 /path/to/local/repo /custom/install/path  # 自定义安装目录"
    echo ""
    echo "仓库地址格式:"
    echo "  https://用户名:密码@gitee.com/用户名/仓库名.git"
    echo ""
    echo "注意: 如果仓库需要登录，请使用以下格式:"
    echo "  https://gitee.com/用户名/仓库名.git"
    echo "  然后手动输入用户名和密码"
}

# 参数处理
case "${1:-}" in
    "help"|"-h"|"--help")
        show_help
        exit 0
        ;;
    *)
        main "$@"
        ;;
esac